#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2020/7/24 5:11 下午
# @Author  : wancheng.b
# @File    : str_note.py
# @Software: PyCharm

'''
字符串的内置方法，调用：str.method()
'''

# 1、capitalize(),将字符串的第一个字母大写，其他字母变小写
print('---capitalize()---')
str = 'this is '
print(str.capitalize())

# 2、center(width, fillchar),返回一个以字符串为中心的指定宽度为width的字符串（字符串居中），fillchar为填充字符。默认为空格
print('---center()---')
str = 'center'
print(str.center(15, '#'))  # 打印结果：#####center####

# 3、encode(),以指定的编码格式编码字符串， strs.encode(encoding='utf-8')
print('---encode()---')
str = '你好'
str_encode = str.encode('utf-8')
print('以utf-8编码', str_encode)

# 4、decode(),以指定的编码格式解码bytes对象，默认为'utf-8'
# bytes.decode(encoding='utf-8')
print('---decode()---')
print('解码utf-8', str_encode.decode('utf-8'))

# 5、endwsith(suffix, start, end),判断字符串是否以指定的字符结尾，是则返True,否则返回False.suffix：元素或者字符串，start、end：起始位置
print('---endswith()---')
str = 'sdf10!!'
print(str.endswith('!!'))

# 6、expandtabs(tabsize=8),把字符串中的tab符号（/t）转换成指定的空格数，默认的空格数为8
print('---expandtabs()---')
str = '我这里\t有tab符号'
print(str.expandtabs(tabsize=8))
print(len(str.expandtabs(tabsize=8)))

# 7、find(str, start, end),在起始位置查找是否包含str，包含则返回索引，不包含返回-1。rfind（），从右边开始查找
print('---find()---')
str = 'asdfghj'
print(str.find('s'))
print(str.find('o'))

# 8、index(),在起始位置查找特定str，找到则返回索引，否则报异常。rindex(),从右边开始查找
print('---index()---')
str = 'fghjk'
print(str.index('f'))
try:
    print(str.index('a'))
except Exception as e:
    print('找不到就报异常', e)

# 9、isalnum(),检查字符串是否全部由数字和字母组成，返回True和False
print('---isalnum---')
str = 'adf23sgf'
print(str.isalnum())

# 10、isalpha(),检查字符串是否全部由字母或文字组成
print('---isalpha---')
str = 'nihao你好'
print(str.isalpha())

# 11、isdigit(),检查字符串是否只由数字（0到9）组成
print('---isdigit()---')
str = '123'
print(str.isdigit())

# 12、isspase(),检查字符串是否只由空格组成
print('---isspase()---')
print('   '.isspace())

# 13、isupper(),检查字符串中所有字母是否都是大写
print('---isupper()---')
print('ASDFGH'.isupper())

# 14、join(),用于将序列中的元素以指定的字符链接成新的字符串
s1 = '-'
seq = ('a', 'b', 'c')
print(s1.join(seq))

# 15、lower()，将字符串中的所有大写字母变成小写
print('---lower---')
print('ASDFG'.lower())

# 16、upper(),将字符串中的小写字母转换成大写
print('---upper()---')
print('asdfasdf'.upper())

# 17、lstrip(),截掉字符串左边的空格或指定字符串
print('---lstrip()---')
print('\tasda')
print('\tasda'.lstrip('\t'))

# 18、rstrip(),截掉字符串右边的空个或指定字符
print('---rstrip---')
print('fghj\t')
print('fgh\t'.rstrip('\t'))

# 19、strip(),截掉字符串首尾的空格或者指定字符
print('---strip---')
print('\tasdfadsf\t'.strip('\t'))

# 20、max()、min(),返回字符串中最大最小的字母
print('---max()、min()---')
print(max('asdfrv'))
print(min('asdfrv'))

# 21、replace(old, new, num),字符串中的old用new来替换，如果指定num则替换不能超过num次
print('---replace()---')
print('sdfghjgjjgj'.replace('g', '1', 2))

# 22、split(str, num),指定分隔符对字符串进行切片，str默认为空字符，空格，换行符/n，制表符/t等；如果num有指定值，则分割为num+1个字符串
print('---split()---')
print('dfgh jk'.split())
print('fghjklkhfg'.split('h'))

# 23、splitlines(keepends),把\n换行,\r回车符,\r\n回车符分割
print('---splitlines()---')
# print('fghj\na\rsdff\r\ngqr')
print('fghj\na\rsdff\r\ngqr'.splitlines())

# 24、startswith(str, beg=0, end=len(str)),用于检查字符串是否以指定字符串开头，return，True、False；beg和end指定起始位置
print('--startwith()---')
print('fghjklkj'.startswith('fg'))

# 25、swapcase(),用于将字符串中的大写转换成小写，小写转换成大写
print('---swapcase()---')
print('sdfHHJK'.swapcase())

if __name__ == '__main__':
    arr = [1, 9, 8, 7, 6, 5, 4, 4]
    for i in range(len(arr) - 1):
        for j in range(len(arr) - 1):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
    print(arr)
    pass
